/*!
\copyright  Copyright (c) 2023 Qualcomm Technologies International, Ltd.\n
            All Rights Reserved.\n
            Qualcomm Technologies International, Ltd. Confidential and Proprietary.
\file       avrcp_profile_event.h
\brief      Events sent by the AVRCP profile
*/

#ifndef AVRCP_PROFILE_CHANNEL_EVENT_SPEC_H_
#define AVRCP_PROFILE_CHANNEL_EVENT_SPEC_H_

#include "channel_event_spec_ids.h"
#include "volume_types.h"
#include <bdaddr.h>

/*! @{ */

/*! \brief The AVRCP profile event channel */
#define EVENT_BUS_CHANNEL_AVRCP_PROFILE     avrcp_profile_event_channel

/*! \brief The AVRCP profile events that are sent. */
typedef enum
{
    avrcp_profile_event_connected,
    avrcp_profile_event_disconnected,
    avrcp_profile_event_remote_device_absolute_vol_support,
    avrcp_profile_event_remote_device_playback_status_support,
    avrcp_profile_event_remote_device_playback_status_changed,
    avrcp_profile_event_remote_device_absolute_vol_update,
    avrcp_profile_event_absolute_volume_change,
} avrcp_profile_event_t;
 
 /*! \brief The data sent with the avrcp_profile_event_connected event. */
typedef struct
{
    bdaddr addr;
}  avrcp_profile_event_connected_t;

/*! \brief The data sent with the avrcp_profile_event_disconnected event. */
typedef struct
{
    bdaddr addr;
}  avrcp_profile_event_disconnected_t;

/*! \brief The data sent with the avrcp_profile_event_remote_device_absolute_vol_support event. */
typedef struct
{
    bdaddr addr;
    bool supported;
}  avrcp_profile_event_remote_device_absolute_vol_support_t;

/*! \brief The data sent with the avrcp_profile_event_remote_device_playback_status_support event. */
typedef struct
{
    bdaddr addr;
    bool supported;
}  avrcp_profile_event_remote_device_playback_status_support_t;

/*! \brief The data sent with the avrcp_profile_event_remote_device_playback_status_changed event. */
typedef struct
{
    bdaddr addr;
    uint8 playback_status;
}  avrcp_profile_event_remote_device_playback_status_changed_t;

/*! \brief The data sent with the avrcp_profile_event_remote_device_absolute_vol_update event. */
typedef struct
{
    bdaddr addr;
    uint8 volume;
}  avrcp_profile_event_remote_device_absolute_vol_update_t;

/*! \brief The data sent with the avrcp_profile_event_absolute_volume_change event. */
typedef struct
{
    bdaddr addr;
    uint8 volume;
    event_origin_t origin;
} avrcp_profile_event_absolute_volume_change_t;


/*! @} */

#endif /* A2DP_PROFILE_CHANNEL_EVENT_SPEC_H_ */
